Various methods for managing computer network congestion are known in the art. However, many investigators have noted that packet-switching protocols such as TCP perform worse over cell-switched networks such as ATM networks than they do over packet-switched networks despite the application of a variety of congestion management techniques. The effective throughput, or “goodput” (namely throughput that is “good” for the higher layer protocol), of TCP over ATM can be very low when TCP packet cells are dropped by congested ATM switches over which TCP connections are established. This is due to the fact that while the loss of a single cell corrupts an entire packet, the rest of the cells belonging to the same corrupted packet are not necessarily dropped. These cells continue to consume network resources such as bandwidth and buffer space, unnecessarily increasing the chance that other cells may be dropped.
In order to solve this problem and to maximize the number of completely delivered packets by avoiding the transmission of useless cells, two control mechanisms have been proposed, namely PPD, or partial packet discard (also referred to as TPD, or “tail packet discard”), and EPD, or “early packet discard.” In PPD, whenever a cell has been discarded by a switch due to congestion or for any other reason, the subsequent cells belonging to the same higher layer packet, except the last cell, are intentionally discarded. The last cell is needed in an ATM network supporting ATM adaptation layer 5 (AAL-5) where it is used to separate one packet from the next over the same virtual channel (VC). The PPD mechanism thus conserves the bandwidth and buffer space other wise required for routing the “tail” cells of the packet. However, it cannot conserve the bandwidth and buffer space already used for the “leading” cells, which may have already been buffered and transmitted. EPD is designed to prevent the leading cells of a packet in which a cell is dropped from being buffered and transmitted. This is done by setting a buffer threshold and testing the threshold to determine whether or not there is room in the buffer for the entire packet before buffering any packet cells. If the threshold is exceeded, all of the cells in the packet are dropped except for the last cell.
A TCP packet loss can be detected by the sending device by detecting a time-out or by receiving 3 duplicate acknowledgments (ACKs). The sending device maintains an estimate of the maximum round-trip time of the connection. When an ACK for a packet has not arrived within the maximum round-trip time, the sending device detects the packet loss and re-transmits the lost packet. The time during which the sending device waits for an ACK of a lost packet to arrive is referred to as a time-out. Most commercial TCP implementations set the time-out to be at least 2-3 seconds. Since typical data transfer times range from tens of milliseconds to several seconds, even a single time-out during the lifetime of a TCP connection results in significant performance degradation.
A fast retransmit method has been developed to avoid time-outs. Since the receiving device acknowledges the highest in-order packet sequence number it has received so far, when it receives an out-of-order packet (due to a loss of a previous packet) it generates an ACK for the same highest in-order sequence number. Such an ACK is referred to as a duplicate ACK. Under the fast retransmit method, when the sending device receives three duplicate ACKS, the sending device considers the packet, which starts with the sequence number immediately after the number acknowledged by the duplicate ACKs, to be lost. Hence, the presumed missing packet is immediately retransmitted.
Fast retransmit helps to minimize the recovery delay from a loss of a single packet if the TCP sending window size is large enough (i.e., larger than 4 packets). However, if for a given TCP connection two or more packets belonging to the same window are lost, the sending device can usually recover from only the first packet loss using fast retransmit, whereas recovery from other losses generally only occurs after a time-out. Hence, for a given TCP connection a burst of losses has a very negative effect on the connection's throughput. While PPD and EPD may conserve network resources for a given packet in which a cell is dropped, they offer no mechanism for maximizing network throughput by reducing the number of packets lost in a given TCP sending window for a given TCP connection.
Relevant methods useful in managing computer network congestion are discussed in the following:                G. Armitage and K. Adams, “Packet Reassembly During Cell Loss”, IEEE Network Mag, Vol. 7 No. 5 September 1993, pp. 26-34;        A. Romanow and S. Floyd, “Dynamics of TCP Traffic over ATM Networks”, IEEE Journal on Selected Areas in Communications, May 1995; and        J. Turner, “Maintaining High Throughput During Overload in ATM Switches”, Proceedings of IEEE Infocom '96. San Francisco, March 1996.        
The disclosures of the above publications and of the publications cited therein are hereby incorporated by reference. The disclosures of all publications mentioned in this specification and of the publications cited therein are hereby incorporated by reference.